import api from "@/utils/api";
import { message } from "ant-design-vue";

// 查询参数接口
export interface SearchParams {
    dpmNameCn: string;
    roleName: string;
    businessName: string;
    fmDesc: string;
    cpSpec: string;
    reactionPlanCn: string;
    value: string;
    current?: number;
    pageSize?: number;
}

// 字段映射
export const fieldMap = {
    dpmNameCn: '部门',
    roleName: '角色',
    businessName: '业务',
    fmDesc: '痛点',
    cpSpec: '控制要求',
    reactionPlanCn: '反应计划',
    value: '价值主张'
};

/**
 * 查询需求申请单列表
 */
export const fetchRequirementList = async (searchParams: SearchParams): Promise<any[]> => {
    try {
        const response = await api.get('/requirement/dtoRequirement', {
            params: searchParams,
            timeout: 5000
        });

        let data = [];

        // 更健壮的数据提取逻辑
        if (response.data) {
            if (response.data.data && Array.isArray(response.data.data)) {
                // 分页响应格式
                data = response.data.data;
            } else if (Array.isArray(response.data)) {
                // 直接返回数组格式
                data = response.data;
            } else if (response.data.records && Array.isArray(response.data.records)) {
                // 另一种分页格式
                data = response.data.records;
            }
        }

        return data;
    } catch (error) {
        console.error('查询失败:', error);
        message.error('查询失败，请重试');
        throw error;
    }
};

/**
 * 预览需求申请单详情
 */
export const fetchRequirementDetail = async (id: string | number): Promise<any> => {
    if (!id) {
        message.warning('请先选择一条记录进行预览');
        throw new Error('未选择记录');
    }

    try {
        const response = await api.get(`/requirement/dtoRequirementDetails/id?id=${id}`, {
            timeout: 5000
        });

        console.log('预览接口响应数据:', response.data);

        if (response.data && Object.keys(response.data).length > 0) {
            return response.data;
        } else {
            console.warn('预览接口返回空数据或无效数据');
            message.warning('未找到相关数据或数据格式不正确');
            throw new Error('数据为空');
        }
    } catch (error: any) {
        console.error('预览数据加载失败:', error);

        // 更详细的错误信息
        if (error.response) {
            // 服务器返回了错误状态码
            console.error('错误状态码:', error.response.status);
            console.error('错误响应数据:', error.response.data);

            if (error.response.status === 404) {
                message.error('未找到该需求申请单的详细信息');
            } else if (error.response.status === 500) {
                message.error('服务器内部错误，请稍后重试');
            } else {
                message.error(`请求失败: ${error.response.status} ${error.response.statusText}`);
            }
        } else if (error.request) {
            // 请求发送了但没有收到响应
            console.error('网络错误，未收到响应:', error.request);
            message.error('网络连接异常，请检查网络后重试');
        } else {
            // 其他错误
            console.error('其他错误:', error.message);
            message.error('预览数据加载失败，请重试');
        }

        throw error;
    }
};

export default {
    fieldMap,
    fetchRequirementList,
    fetchRequirementDetail,
};